Skip to content

Update dependency @effect/tsgo to v0.53.0 - #320

Open
renovate[bot] wants to merge 4 commits into
mainfrom
renovate/typescript-and-@effecttsgo
Open

renovate[bot] wants to merge 4 commits into
mainfrom
renovate/typescript-and-@effecttsgo

Conversation

@renovate

@renovate renovate Bot commented Oct 21, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
@effect/tsgo (source) 0.52.0 → 0.53.0 age confidence

Release Notes

Effect-TS/tsgo (@​effect/tsgo)

v0.53.0

Compare Source

Minor Changes
  • 13a46c9: The deterministicKeys rule and the key completions now compute a key for files without a package.json, or whose nearest package.json has no name. The key is built as usual, but without the package name. The sub-directory segment is relative to the package.json directory if one is found, otherwise to the tsconfig.json directory, otherwise to the program's common source directory.

    Projects that enabled deterministicKeys without a package.json will now see reports. This differs from the upstream @effect/language-service, which skips these files.

    {
      "name": "@effect/language-service",
      "keyPatterns": [{ "target": "service", "pattern": "default" }]
    }
    // src/services/AuthService.ts, no package.json, tsconfig.json at the project root
    // reports: the expected key is `services/AuthService/MyService`
    export class MyService extends Context.Service<MyService, {}>()("MyService") {}
  • d8c489b: Add errorPayloadShadowsName to detect inline name payload fields on Effect error classes. For example, Data.TaggedError("ToolNotFound")<{ name: string }> copies the payload's name onto the error instance and hides the error type in logs. Rename the field to toolName. The rule inspects inline payloads only and allows a field whose value is the literal the error already uses as its name.

  • 13a46c9: Add an "identifier" pattern to keyPatterns for the deterministicKeys rule. With it, the expected key is the class name alone.

    {
      "name": "@effect/language-service",
      "keyPatterns": [{ "target": "error", "pattern": "identifier" }]
    }
    // reports: the expected key is `KeybindingsConfigError`
    export class KeybindingsConfigError extends Data.TaggedError("KeybindingsConfigParseError")<{}> {}
  • b1ed4ba: Add preferNamespaceImport and preferBarrelImport, two diagnostics that report existing imports that contradict the import style configured with namespaceImportPackages and barrelImportPackages. Auto-import already follows these options; the new rules also cover imports written by hand. Both are off by default and have no quick fix.

    preferNamespaceImport reports named imports from packages in namespaceImportPackages:

    // "namespaceImportPackages": ["effect"]
    import { Effect } from "effect" // expected: import * as Effect from "effect/Effect"
    import { map } from "effect/Array" // expected: import * as Array from "effect/Array"
    import { pipe } from "effect" // reported only with "topLevelNamedReexports": "follow"

    preferBarrelImport reports imports of individual modules from packages in barrelImportPackages:

    // "barrelImportPackages": ["effect"]
    import * as Record from "effect/Record" // expected: import { Record } from "effect"
    import * as HttpClient from "effect/http/HttpClient" // expected: import { HttpClient } from "effect/http"

    Both the rules and auto-import find a barrel from the package files, for any package, instead of from a built-in list of Effect paths. A module's barrel is the nearest index module above it that forwards it with export * as Name, and Name is the import name used. Barrel files are read from disk when no file in the program imports them yet. Auto-import with barrelImportPackages uses the same lookup, so it no longer rewrites a module that no barrel forwards, and no longer rewrites an import that already comes from a barrel (such as pipe from "effect") into import { effect } from "effect".

  • b1ed4ba: Allow namespaceImportPackages, barrelImportPackages, importAliases, and topLevelNamedReexports in per-file overrides. Auto-import, the import quick fixes, and the preferNamespaceImport and preferBarrelImport diagnostics use the value resolved for the current file, and a scoped value replaces the base value.

    {
      "namespaceImportPackages": ["effect"],
      "overrides": [{
        "include": ["src/legacy/**/*.ts"],
        "options": {
          "namespaceImportPackages": [],
          "barrelImportPackages": ["effect"]
        }
      }]
    }
Patch Changes
  • 61eb79c: Compute Effect diagnostics with less work. Rules and the type parser now test node kinds, shapes and argument counts before they query types, symbols or signatures, and they compute types only for steps that can still report:

    • IsNodeReferenceToModuleExport answers symbols with no declaration in the requested module from a per-symbol bitmask instead of a per-symbol map.
    • DataFirstOrLastCall checks the cached signature shape before it types call arguments, and caches its result per call.
    • missedPipeableOpportunity, catchDieToOrDie and preferTypedSchemaDecoder type piping-flow steps only when a step matches.
    • The experimentalApiUsage and unstableApiUsage rules reuse their own symbol lookup instead of repeating it.

    With every rule enabled, tsc -b of the Effect monorepo drops from 33.9s to 32.1s (stock TypeScript-Go: 20.4s). The reported diagnostics are unchanged.

  • cb5739d: Update the TypeScript next tag to typescript@next, which ships typescript-go commit b5c34ba0c61a756c8abaf133236dddf982c27f45, and update the TypeScript latest tag to typescript@latest. Refresh the Oxlint configuration schema from the selected package.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@GraemeF

GraemeF commented Oct 21, 2026

Copy link
Copy Markdown
Contributor

@effect/tsgo 0.53 adds the errorPayloadShadowsName rule, and our tsconfig counts its suggestions toward the exit code. The second commit renames the name payload field to botName on UnknownIdentity and AttachIdentityNotFound. That field was copied onto the error instance and replaced the error type in logs and String(error). A regression test covers UnknownIdentity. The other 0.53 changes are off by default or touch rules we do not enable.

@renovate

renovate Bot commented Oct 21, 2026

Copy link
Copy Markdown
Contributor Author

Edited/Blocked Notification

Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

You can manually request rebase by checking the rebase/retry box above.

⚠️ Warning: custom changes will be lost.

renovate Bot and others added 2 commits October 24, 2026 12:55
@effect/tsgo 0.53 adds errorPayloadShadowsName. A payload field called
name is copied onto the error instance and replaces the error type, so
logs and String(error) showed the bot name instead of UnknownIdentity or
AttachIdentityNotFound.
@GraemeF
GraemeF force-pushed the renovate/typescript-and-@effecttsgo branch from 8ab6de4 to f63ab45 Compare October 24, 2026 11:56

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant